home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
pc
/
LOGIC Apple II 5.25" Library - DOS Part 3
/
DOS075.dsk
/
SOFSYMREF.S
< prev
next >
Wrap
Text File
|
2012-02-16
|
4KB
|
219 lines
*
*
* SOFSYMREF
* ^^^^^^^^^
*
*
*BY DAVE EDMUNDS, 18 MAY 80
*
*
*START 28000, LENGTH 273
*START $6D60, LENGTH $111
*
*PROCEDURE:
* A.LOAD APPLESOFT PROGRAM
* B.BRUN SOFSYMREF
* C.TO REPEAT, CALL 28000
*
*
*LINE POINTER, LOW BYTE:
LNPTL EQU $6
*LINE POINTER, HIGH BYTE:
LNPTH EQU $7
*NEXT POINTER, LOW:
NXPTL EQU $8
*NEXT POINTER, HIGH:
NXPTH EQU $9
*HOLD ACCUMULATOR:
ACC EQU $19
*LINE NUMBER, LOW:
LINOL EQU $1A
*LINE NUMBER, HIGH:
LINOH EQU $1B
*FIGURE REGISTER (3 BYTES):
FIG EQU $1D
*PROGRAM POINTER, LOW:
PRGL EQU $67
*PROGRAM POINTER, HIGH:
PRGH EQU $68
*LINE LENGTH:
LLN EQU $FB
*SPACE FLAG:
SPFG EQU $FC
*QUOTES FLAG:
QFG EQU $FD
*LINE FLAG:
LINFG EQU $FE
*CHARACTER FLAG:
CHARFG EQU $FF
*RETURN TO BASIC:
RBAS EQU $3D0
*CARRIAGE RETURN OUT:
CROUT EQU $FD8E
*PRINT HEXADECIMAL BYTE:
PRBYTE EQU $FDDA
*PRINT HEXADECIMAL (LOWER) NYBBLE:
PRHEX EQU $FDE3
*CHARACTER OUT:
COUT EQU $FDED
*$6D60=28000:
OBJ $6D60
ORG $6D60
LDA PRGL
STA NXPTL
LDA PRGH
STA NXPTH
LDA #$0
STA SPFG
STA QFG
STA LINFG
STA CHARFG
*EXAMINE LINE:
LINE LDA NXPTL
STA LNPTL
LDA NXPTH
STA LNPTH
LDY #$0
LDA (LNPTL),Y
STA NXPTL
SEC
SBC LNPTL
STA LLN
INY
LDA (LNPTL),Y
STA NXPTH
BEQ END
INY
LDA (LNPTL),Y
STA LINOL
INY
LDA (LNPTL),Y
STA LINOH
*NEXT CHARACTER:
NCHAR INY
CPY LLN
BEQ EOL
LDA (LNPTL),Y
CMP #'"
BEQ QUOTE
PHA
LDA QFG
BNE NCHAR
PLA
CMP #$B2
BEQ EOL
CMP #$83
BEQ EOL
CMP #$5B
BCS NOVAR
CMP #'0
BCC QUAL
CMP #'A
BCC NUM
LDX LINFG
BEQ PRLN
*PRINT:
PR LDX #$1
STX CHARFG
*PRINT CHARACTER:
PRCH ORA #$80
JSR COUT
LDX #$1
STX SPFG
BNE NCHAR
*FINISHED:
END JSR RBAS
*END OF LINE:
EOL LDA LINFG
BEQ NXLN
JSR CROUT
*PREPARE FOR NEXT LINE:
NXLN LDA #$0
STA QFG
STA LINFG
STA CHARFG
BEQ LINE
*NOT A VARIABLE:
NOVAR LDA SPFG
BEQ ZER
LDA #$A0
JSR COUT
*ZERO SPACES NEEDED:
ZER LDA #$0
STA SPFG
STA CHARFG
BEQ NCHAR
*QUOTE CHARACTER:
QUOTE LDA QFG
BEQ QUITE
LDA #$0
STA QFG
BEQ NCHAR
*SECOND QUOTE CHARACTER:
QUITE LDA #$1
STA QFG
BNE NOVAR
*VARIABLE QUALIFICATION:
QUAL LDX CHARFG
BEQ NOVAR
CMP #'$
BEQ PRCH
CMP #'%
BEQ PRCH
CMP #'(
BNE NOVAR
LDX #$0
STX CHARFG
BEQ PRCH
*NUMBER:
NUM CMP #':
BCS NOVAR
LDX CHARFG
BEQ NOVAR
BNE PRCH
*PRINT LINE NUMBER:
PRLN STA ACC
LDX LINOL
LDA LINOH
JSR DEHEX
LDA #"-
JSR COUT
LDA #$A0
JSR COUT
LDA ACC
LDX #$1
STX LINFG
BNE PR
* DEHEX SUBROUTINE--
*CONVERT HEX TO DECIMAL:
DEHEX SED
LDX #$0
STX FIG
STX FIG+1
STX FIG+2
LDX #$10
*ROLL (DOUBLE & ADD NEW BIT):
RO ROL LINOL
ROL LINOH
LDA FIG
ADC FIG
STA FIG
LDA FIG+1
ADC FIG+1
STA FIG+1
LDA FIG+2
ADC FIG+2
STA FIG+2
DEX
BNE RO
CLD
JSR PRHEX
LDA FIG+1
JSR PRBYTE
LDA FIG
JSR PRBYTE
RTS
*
* SOFSYMREF
*